var express = require('express');
var router = express.Router();
const user = require("../sql/user");
const sql = require("../sql/sql");
const uuid = require("uuid");
const md5 = require("md5");
const tools = require("../tools")




// 发送短信验证码
router.post("/sendsms",(req, res, next)=>{
    // 1. 接收手机号
    const tel = req.body.tel-0;
    // 2. 先从数据库中查询是否存在手机号
    sql.get(user, {tel} ).then(data=>{
        // 3. 如果存在手机号，查询当前手机号是否有用户名
        if(data.length > 0){
            // 4. 如果有用户名，表示该手机号已被注册
            if(data[0].username){
                res.send({
                    code: 2,
                    title: "该手机号已被注册",
                    data: null
                })
            }else{
                // 5. 如果没有用户名，表示曾经发送过短信，但没有注册，重新发送短信即可
                const code = (Math.random()+"").substr(2, 4);
                tools.sendSMS(tel, code).then(result=>{
                    // 短信再次发送成功后，根据手机号，更新验证码
                    sql.set(user,{tel},{code}).then(()=>{
                        res.send({
                            code: 1,
                            title: "验证码再次发送成功",
                            data: code
                        })
                    })
                }).catch(err=>{
                    res.send({
                        code: 0,
                        title: err,
                        data: null
                    })
                })
            }
        }else{
            // 6. 手机号不存在，直接发送短信
            const code = (Math.random()+"").substr(2, 4);
            tools.sendSMS(tel, code).then(result=>{
                // 短信发送成功后，将手机号和验证码都存入数据库
                sql.add(user,{tel, code}).then(()=>{
                    res.send({
                        code: 1,
                        title: "验证码第一次发送成功",
                        data: code
                    })
                })
            }).catch(err=>{
                res.send({
                    code: 0,
                    title: err,
                    data: null
                })
            })
        }
    })
})





// 注册功能
router.post('/register', function(req, res, next) {
    const username = req.body.username;
    const password = req.body.password;
    const tel = req.body.tel-0;
    const code = req.body.code;

    sql.get(user, {username}).then((data)=>{
        if(data.length > 0){
            res.send({
                code:4,
                title:"用户名已存在",
                data:null
            })
        }else{
            // 1. 先根据手机号判断是否存在数据
            sql.get(user, {tel}).then(data=>{
                if(data.length > 0){
                    // 3. 如果存在，判断该手机号是否对应用户名
                    if(data[0].username){
                        // 4. 如果有用户名，不允许重复注册
                        res.send({
                            code: 2,
                            title: "该手机号已被注册",
                            data: null
                        })
                    }else{
                        // 5. 没有用户名，验证码是否正确
                        if(data[0].code === code){
                            // 7. 验证码正确，更新信息
                            sql.set(user,{tel},{
                                username:username,
                                password:md5(password)
                            }).then(()=>{
                                // 8. 数据库更新成功后，注册成功
                                res.send({
                                    code:1,
                                    title:"注册成功",
                                    data:null
                                })
                            })
                        }else{
                            // 6. 验证码不对，提示重新输入
                            res.send({
                                code: 3,
                                title: "验证码不对",
                                data: null
                            })
                        }
                    }
                }else{
                    // 2. 如果不存在，提示请先发送验证码
                    res.send({
                        code:0,
                        title:"请先发送验证码",
                        data:null
                    })
                }
            })
        }
    })
});

module.exports = router;
